package com.hsjk.szwj.module.train.service.impl;

import com.hsjk.szwj.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.hsjk.szwj.framework.tenant.core.aop.TenantIgnore;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseItemCreateReqVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseItemDetailRespVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseItemUpdateReqVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminGetCourseItemByCourseIdRespVO;
import com.hsjk.szwj.module.train.convert.CourseItemConvert;
import com.hsjk.szwj.module.train.dal.dataobject.course.CourseItemDO;
import com.hsjk.szwj.module.train.dal.mysql.course.ICourseItemMapper;
import com.hsjk.szwj.module.train.service.ICourseItemService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author chenjiawei
 * @desc
 * @Date 2023/09/25 17:29
 **/
@Service
public class CourseItemServiceImpl implements ICourseItemService {
    @Resource
    private ICourseItemMapper courseItemMapper;

    @Override
    public List<AdminGetCourseItemByCourseIdRespVO> listCourseItemByCourseId(Long courseId) {
        List<CourseItemDO> courseItemDOS = courseItemMapper.selectList(new LambdaQueryWrapperX<CourseItemDO>()
                .eq(CourseItemDO::getCourseId, courseId));
        return CourseItemConvert.INSTANCE.convertListAdminGetCourseItemByCourseIdRespVO(courseItemDOS);
    }

    @Override
    public List<AdminGetCourseItemByCourseIdRespVO> listCourseItemByCatalogId(Long catalogId) {
        List<CourseItemDO> courseItemDOS = courseItemMapper.selectList(new LambdaQueryWrapperX<CourseItemDO>()
                .eq(CourseItemDO::getCatalogId, catalogId));
        return CourseItemConvert.INSTANCE.convertListAdminGetCourseItemByCourseIdRespVO(courseItemDOS);
    }

    @Override
    public AdminCourseItemDetailRespVO getCourseItemDetail(Long id) {
        CourseItemDO courseItemDO = courseItemMapper.selectById(id);
        return CourseItemConvert.INSTANCE.convertAdminCourseItemDetailRespVO(courseItemDO);
    }

    @Override
    public Boolean createCourseItem(AdminCourseItemCreateReqVO reqVO) {
        CourseItemDO courseItemDO = CourseItemConvert.INSTANCE.convertCourseItemDO(reqVO);
        int insert = courseItemMapper.insert(courseItemDO);
        return insert > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    public Boolean updateCourseItem(AdminCourseItemUpdateReqVO reqVO) {
        CourseItemDO courseItemDO = CourseItemConvert.INSTANCE.convertCourseItemDO(reqVO);
        int update = courseItemMapper.updateById(courseItemDO);
        return update > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    public Boolean deleteCourseItem(Long id) {
        int result = courseItemMapper.deleteById(id);
        return result > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    @TenantIgnore
    public Integer getMemberLiveCourse(Long liveId, Long memberId) {
        return courseItemMapper.getMemberLiveCourse(liveId, memberId);
    }
}
